<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/Python-3.6.2/Include/compile.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/Python-3.6.2/Include/compile.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="macros_noref.html#_UHlfQ09NUElMRV9IXzA_"><span class="b">Py_COMPILE_H</span></a>
<a name="2" /><span class="True">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlfQ09NUElMRV9IXzA_"><span class="b">Py_COMPILE_H</span></a>
<a name="3" /><span class="True">       3:</span> 
<a name="4" /><span class="True">       4:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">Py_LIMITED_API</span>
<a name="5" /><span class="True">       5:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;code.h&quot;</span>
<a name="6" /><span class="True">       6:</span> 
<a name="7" /><span class="False">       7:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">__cplusplus</span>
<a name="8" /><span class="False">       8:</span> <span class="m">extern</span> <span class="e">&quot;C&quot;</span> <span class="f">{</span>
<a name="9" /><span class="True">       9:</span> <span class="f">#</span><span class="n">endif</span>
<a name="10" /><span class="True">      10:</span> 
<a name="11" /><span class="True">      11:</span> <span class="k">/* Public interface */</span>
<a name="12" /><span class="True">      12:</span> <span class="m">struct</span> <span class="b">_node</span><span class="f">;</span> <span class="k">/* Declare the existence of this type */</span>
<a name="13" /><span class="True">      13:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyCodeObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyNode_Compile</span><span class="f">(</span><span class="m">struct</span> <span class="b">_node</span> <span class="f">*</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="14" /><span class="True">      14:</span> 
<a name="15" /><span class="True">      15:</span> <span class="k">/* Future feature support */</span>
<a name="16" /><span class="True">      16:</span> 
<a name="17" /><span class="True">      17:</span> <span class="m">typedef</span> <span class="m">struct</span> <span class="f">{</span>
<a name="18" /><span class="True">      18:</span>     <span class="m">int</span> <span class="b">ff_features</span><span class="f">;</span>      <span class="k">/* flags set by future statements */</span>
<a name="19" /><span class="True">      19:</span>     <span class="m">int</span> <span class="b">ff_lineno</span><span class="f">;</span>        <span class="k">/* line number of last future statement */</span>
<a name="20" /><span class="True">      20:</span> <span class="f">}</span> <span class="b">PyFutureFeatures</span><span class="f">;</span>
<a name="21" /><span class="True">      21:</span> 
<a name="22" /><span class="True">      22:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_RlVUVVJFX05FU1RFRF9TQ09QRVNfMA__"><span class="b">FUTURE_NESTED_SCOPES</span></a> <span class="e">&quot;nested_scopes&quot;</span>
<a name="23" /><span class="True">      23:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_RlVUVVJFX0dFTkVSQVRPUlNfMA__"><span class="b">FUTURE_GENERATORS</span></a> <span class="e">&quot;generators&quot;</span>
<a name="24" /><span class="True">      24:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_RlVUVVJFX0RJVklTSU9OXzA_"><span class="b">FUTURE_DIVISION</span></a> <span class="e">&quot;division&quot;</span>
<a name="25" /><span class="True">      25:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_RlVUVVJFX0FCU09MVVRFX0lNUE9SVF8w"><span class="b">FUTURE_ABSOLUTE_IMPORT</span></a> <span class="e">&quot;absolute_import&quot;</span>
<a name="26" /><span class="True">      26:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_RlVUVVJFX1dJVEhfU1RBVEVNRU5UXzA_"><span class="b">FUTURE_WITH_STATEMENT</span></a> <span class="e">&quot;with_statement&quot;</span>
<a name="27" /><span class="True">      27:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_RlVUVVJFX1BSSU5UX0ZVTkNUSU9OXzA_"><span class="b">FUTURE_PRINT_FUNCTION</span></a> <span class="e">&quot;print_function&quot;</span>
<a name="28" /><span class="True">      28:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_RlVUVVJFX1VOSUNPREVfTElURVJBTFNfMA__"><span class="b">FUTURE_UNICODE_LITERALS</span></a> <span class="e">&quot;unicode_literals&quot;</span>
<a name="29" /><span class="True">      29:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_RlVUVVJFX0JBUlJZX0FTX0JERkxfMA__"><span class="b">FUTURE_BARRY_AS_BDFL</span></a> <span class="e">&quot;barry_as_FLUFL&quot;</span>
<a name="30" /><span class="True">      30:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_RlVUVVJFX0dFTkVSQVRPUl9TVE9QXzA_"><span class="b">FUTURE_GENERATOR_STOP</span></a> <span class="e">&quot;generator_stop&quot;</span>
<a name="31" /><span class="True">      31:</span> 
<a name="32" /><span class="True">      32:</span> <span class="m">struct</span> <span class="b">_mod</span><span class="f">;</span> <span class="k">/* Declare the existence of this type */</span>
<a name="33" /><span class="True">      33:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlBU1RfQ29tcGlsZV8w"><span class="b">PyAST_Compile</span></a><span class="f">(</span><span class="b">mod</span><span class="f">,</span> <span class="b">s</span><span class="f">,</span> <span class="b">f</span><span class="f">,</span> <span class="b">ar</span><span class="f">)</span> <span class="b">PyAST_CompileEx</span><span class="f">(</span><span class="b">mod</span><span class="f">,</span> <span class="b">s</span><span class="f">,</span> <span class="b">f</span><span class="f">,</span> <span class="f">-</span><span class="c">1</span><span class="f">,</span> <span class="b">ar</span><span class="f">)</span>
<a name="34" /><span class="True">      34:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyCodeObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyAST_CompileEx</span><span class="f">(</span>
<a name="35" /><span class="True">      35:</span>     <span class="m">struct</span> <span class="b">_mod</span> <span class="f">*</span><span class="b">mod</span><span class="f">,</span>
<a name="36" /><span class="True">      36:</span>     <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">filename</span><span class="f">,</span>       <span class="k">/* decoded from the filesystem encoding */</span>
<a name="37" /><span class="True">      37:</span>     <span class="b">PyCompilerFlags</span> <span class="f">*</span><span class="b">flags</span><span class="f">,</span>
<a name="38" /><span class="True">      38:</span>     <span class="m">int</span> <span class="b">optimize</span><span class="f">,</span>
<a name="39" /><span class="True">      39:</span>     <span class="b">PyArena</span> <span class="f">*</span><span class="b">arena</span><span class="f">)</span><span class="f">;</span>
<a name="40" /><span class="True">      40:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyCodeObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyAST_CompileObject</span><span class="f">(</span>
<a name="41" /><span class="True">      41:</span>     <span class="m">struct</span> <span class="b">_mod</span> <span class="f">*</span><span class="b">mod</span><span class="f">,</span>
<a name="42" /><span class="True">      42:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="b">filename</span><span class="f">,</span>
<a name="43" /><span class="True">      43:</span>     <span class="b">PyCompilerFlags</span> <span class="f">*</span><span class="b">flags</span><span class="f">,</span>
<a name="44" /><span class="True">      44:</span>     <span class="m">int</span> <span class="b">optimize</span><span class="f">,</span>
<a name="45" /><span class="True">      45:</span>     <span class="b">PyArena</span> <span class="f">*</span><span class="b">arena</span><span class="f">)</span><span class="f">;</span>
<a name="46" /><span class="True">      46:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyFutureFeatures</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyFuture_FromAST</span><span class="f">(</span>
<a name="47" /><span class="True">      47:</span>     <span class="m">struct</span> <span class="b">_mod</span> <span class="f">*</span> <span class="b">mod</span><span class="f">,</span>
<a name="48" /><span class="True">      48:</span>     <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">filename</span>        <span class="k">/* decoded from the filesystem encoding */</span>
<a name="49" /><span class="True">      49:</span>     <span class="f">)</span><span class="f">;</span>
<a name="50" /><span class="True">      50:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyFutureFeatures</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyFuture_FromASTObject</span><span class="f">(</span>
<a name="51" /><span class="True">      51:</span>     <span class="m">struct</span> <span class="b">_mod</span> <span class="f">*</span> <span class="b">mod</span><span class="f">,</span>
<a name="52" /><span class="True">      52:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="b">filename</span>
<a name="53" /><span class="True">      53:</span>     <span class="f">)</span><span class="f">;</span>
<a name="54" /><span class="True">      54:</span> 
<a name="55" /><span class="True">      55:</span> <span class="k">/* _Py_Mangle is defined in compile.c */</span>
<a name="56" /><span class="True">      56:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span><span class="f">*</span><span class="f">)</span> <span class="b">_Py_Mangle</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">p</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">name</span><span class="f">)</span><span class="f">;</span>
<a name="57" /><span class="True">      57:</span> 
<a name="58" /><span class="True">      58:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UFlfSU5WQUxJRF9TVEFDS19FRkZFQ1RfMA__"><span class="b">PY_INVALID_STACK_EFFECT</span></a> <a href="macros_ref.html#_SU5UX01BWF8w"><span class="b">INT_MAX</span></a>
<a name="59" /><span class="True">      59:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">PyCompile_OpcodeStackEffect</span><span class="f">(</span><span class="m">int</span> <span class="b">opcode</span><span class="f">,</span> <span class="m">int</span> <span class="b">oparg</span><span class="f">)</span><span class="f">;</span>
<a name="60" /><span class="True">      60:</span> 
<a name="61" /><span class="False">      61:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">__cplusplus</span>
<a name="62" /><span class="False">      62:</span> <span class="f">}</span>
<a name="63" /><span class="True">      63:</span> <span class="f">#</span><span class="n">endif</span>
<a name="64" /><span class="True">      64:</span> 
<a name="65" /><span class="True">      65:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* !Py_LIMITED_API */</span>
<a name="66" /><span class="True">      66:</span> 
<a name="67" /><span class="True">      67:</span> <span class="k">/* These definitions must match corresponding definitions in graminit.h.</span>
<a name="68" /><span class="True">      68:</span> <span class="k">   There&apos;s code in compile.c that checks that they are the same. */</span>
<a name="69" /><span class="True">      69:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlfc2luZ2xlX2lucHV0XzA_"><span class="b">Py_single_input</span></a> <span class="c">256</span>
<a name="70" /><span class="True">      70:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlfZmlsZV9pbnB1dF8w"><span class="b">Py_file_input</span></a> <span class="c">257</span>
<a name="71" /><span class="True">      71:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlfZXZhbF9pbnB1dF8w"><span class="b">Py_eval_input</span></a> <span class="c">258</span>
<a name="72" /><span class="True">      72:</span> 
<a name="73" /><span class="True">      73:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* !Py_COMPILE_H */</span>
<a name="74" /><span class="True">      74:</span> </pre>
  </body>
</html>
